<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表白墙</title>
</head>
<body>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            background-image: url(2167-2022-04-06103729-1649212649521.jpg);
            background-repeat: no-repeat; /* 这个不 平铺*/
            background-position:center center;/*背景的位置 居中*/
            background-size: cover; /*图片尺寸 尽可能的填充上*/
        }

        .container {
            width: 100%;
            height: 800px;
        }

        h3 {
            text-align: center;
            padding: 30px 0;
            font-size: 24px;
        }

        p {
            text-align: center;
            color: #999;
            padding: 10px 0;
        }

        .row {
            width: 400px;
            height: 50px;
            margin: 0 auto;

            display: flex;
            justify-content: center;
            align-items: center;
        }

        .row span {
            width: 60px;
            font-size: 20px;
        }

        .row input {
            width: 300px;
            height: 40px;
            line-height: 40px;
            font-size: 20px;
            text-indent: 0.5em;
            /* 去掉输入框的轮廓线 */
            outline: none;
        }

        .row #submit {
            width: 300px;
            height: 40px;
            font-size: 20px;
            line-height: 40px;
            margin: 0 auto;

            color: white;
            background-color: orange;
            /* 去掉边框 */
            border: none;

            border-radius: 10px;
        }

        .row #submit:active {
            background-color: gray;
        }
    </style>
    <div class="container">
        <h3>表白墙</h3>
        <p>输入后点击提交, 会将信息显示在表格中</p>
        <div class="row">
            <span>谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>对谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>说: </span>
            <input type="text">
        </div>
        <div class="row">
            <button id="submit">提交</button>
        </div>
    </div>



    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script>
        //1.加入ajax的代码有两个，此处的加入的逻辑有两个部分
        //点击按钮提交的时候，ajax要构造数据发给服务器
        //页面加载的时候，从服务器获取消息列表，并在界面上显示

        function getMessages(){
            $.ajax({
                type: 'get',
                url: 'wall',
                success: function(body){
                    //当前的body已经是一个js对象数组，ajax会根据响应的content type来自动进行解析
                    //如果服务器返回的content-type已经是application了 ajax就会把body自动转成js对象
                    //如果客户端没有自动转 那么也可以通过JSON.parse()手动转换

                    //依次获取数组中的每个元素
                    let container = document.querySelector('.container'); //类对象用点.  id用#号开头
                    for(let message of body){
                        let div = document.createElement('div');
                        div.innerHTML = message.from + ' 对 ' + message.to + ' 说: ' + message.message;
                        div.className = 'row';
                        container.appendChild(div);
                    }
                }
            });

        }

        getMessages();



        // 当用户点击 submit, 就会获取到 input 中的内容, 从而把内容构造成一个 div, 插入到页面末尾. 
        let submitBtn = document.querySelector('#submit');
        submitBtn.onclick = function() {
            // 1. 获取到 3 个 input 中的内容. 
            let inputs = document.querySelectorAll('input');
            let from = inputs[0].value;
            let to = inputs[1].value;
            let msg = inputs[2].value;
            if (from == '' || to == '' || msg == '') {
                // 用户还没填写完, 暂时先不提交数据. 
                return;
            }
            // 2. 生成一个新的 div, 内容就是 input 里的内容. 把这个新的 div 加到页面中. 
            let div = document.createElement('div');
            div.innerHTML = from + ' 对 ' + to + ' 说: ' + msg;
            div.className = 'row';
            let container = document.querySelector('.container');
            container.appendChild(div);
            // 3. 清空之前输入框的内容. 
            for (let i = 0; i < inputs.length; i++) {
                inputs[i].value = '';
            }

            //=============================================后添加的内容
             //点击按钮提交的时候，ajax要构造数据发给服务器
            //4.把当前获取到的输入框的内容，构造成一个HTTP post请求，通过ajax发给服务器
            let body = {
                from: from,//后面的from来自上面输入框获取到的value
                to: to,
                message: msg
            };
            
            $.ajax({
                type: "post",
                url: "wall",
                contentType: "application/json;charset=utf8",
                //data包含了body内容
                data: JSON.stringify(body),
                success: function(body){
                    alert("消息提交成功!");
                },
                error: function(){
                    alert("消息提交失败!");
                }
            });

        }
    </script>
</body>
</html>